package com.quwan.app.service;

import com.quwan.app.vo.dispatch.*;
import com.quwan.app.vo.pay.PrePayment;
import com.quwan.common.result.PageResult;

/**
 * @author quan
 * @date 2022-05-25 10:03
 */

public interface DispatchOrderService {
    /**
     * 发布派单
     * @param mId
     * @param params
     * @param payInstance
     * @return
     */
    @Deprecated
    PrePayment PrePayDispatchOrder(String mId, DispatchOrderParams params, PrePaymentInterface payInstance);

    /**
     * 派单列表数据
     * @param pageNo
     * @param pageSize
     * @param cityCode
     * @param categoryId
     * @param sortPrice
     * @return
     */
    PageResult<DispatchOrderDTO> getDispatchOrderList(int pageNo, int pageSize, String cityCode, String categoryId, String sortPrice);

    /**
     * 派单订单信息
     * @param dispatchOrderId
     * @return
     */
    DispatchOrderDTO getDispatchOrderDetail(String mId,String dispatchOrderId);

    /**
     * 申请派单接单
     * @param mId
     * @param id
     * @param date
     * @param time
     * @return
     */
    Boolean applyDispatchOrder(String mId, String id, String date, String time);

    /**
     * 检查是否满足申请条件
     * @param mId
     * @param id
     * @return
     */
    String checkApply(String mId, String id);

    /**
     * 派单用户 订单列表
     * @param id
     * @param pageNo
     * @param pageSize
     * @return
     */
    PageResult<ConsumerDispatchOrderDTO> consumerDispatchOrderList(String id, Integer type, int pageNo, int pageSize);

    /**
     * 选择接单人
     * @param id1
     * @param id
     * @param applyId
     * @return
     */
    PrePayment chooseServiceMember(String mId, String id, String applyId, PrePaymentInterface payInstance, String payType);

    /**
     * 派单人 申请接单用户别表数据
     * @param pageNo
     * @param pageSize
     * @return
     */
    PageResult<ApplyMemberDTO> getChooseServiceList(String id, int pageNo, int pageSize);

    /**
     * 派单状态详情信息
     * @param mId
     * @param id

     * @return
     */
    ConsumeOrderDetailInfoDTO orderStatusInfo(String mId, String id);

    /**
     * 派单订单取消
     * @param mId
     * @param id
     * @return
     */
    Boolean cancelOrder(String mId, String id);

    /**
     * 确认完成订单
     * @param mId
     * @param id
     * @return
     */
    Boolean confirmOrder(String mId, String id);

    /**
     * 接单人 派单申请列表
     * @param mId
     * @param type
     * @param pageNo
     * @param pageSize
     * @return
     */
    PageResult<ServiceDispatchOrderDTO> serviceDispatchOrderList(String mId, Integer type, int pageNo, int pageSize);

    /**
     * 用户是否存在派单信息
     * @param id
     * @return
     */
    Boolean existsDispatchOrder(String id);

    /**
     * 派单发单
     * @param mId
     * @param params
     * @return
     */
    boolean publishOrder(String mId, DispatchOrderParams params);

    /**
     *派单申请 订单信息
     * @param id
     * @return
     */
    ConsumeOrderDetailInfoDTO getApplyOrderInfo(String id);

    /**
     * 派单申请取消
     * @param mId
     * @param id
     * @return
     */
    boolean cancelApplyOrder(String mId, String id);

    /**
     * 是否存在派单申请
     * @param id
     * @return
     */
    Boolean existsApplyOrder(Long id);
    /**
     * 是否存在派单发布
     * @param id
     * @return
     */
    Boolean existsDispatchOrders(Long id);

    boolean checkDispatchOrder(String mId);
}
